package dao;

import java.util.List;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import model.Grupo;

public class GrupoDAO extends GenericDAO {
    
    Grupo grupo = new Grupo();
    
    public Grupo findById(Long id){
        try{
            this.OpenConection();
            grupo = this.em.find(Grupo.class, id);
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, "Erro ao consultar - "+e.getMessage());
        }finally{
            this.CloseConection();
        }
        return grupo;
    }
    
    public Grupo findByName(String nome){
        try{
            this.OpenConection();
            Query consulta;
            consulta = em.createQuery("select u from Grupo u where u.nome = :nome");
            consulta.setParameter("nome", nome);
            grupo = (Grupo)consulta.getSingleResult();
            JOptionPane.showMessageDialog(null, grupo.getNome());
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, "Erro ao consultar - "+e.getMessage());
        }finally{
            this.CloseConection();
        }
        return grupo;
    }
    
    public void delete(Grupo a) {
        try {
            this.OpenConection();
            em.remove(em.getReference(Grupo.class, a.getId()));
            em.getTransaction().commit();
            JOptionPane.showMessageDialog(null, "Deletado com sucesso !");
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Erro ao deletar - "+e.toString());
            em.getTransaction().rollback();
            System.out.println(e.getStackTrace());
            
        } finally {
            this.CloseConection();
        }
    }
    
    public List<Grupo> findAll(){
        try{
            this.OpenConection();
            Query consulta;
            consulta = em.createQuery("SELECT u FROM Grupo u", Grupo.class);
            List<Grupo> lista;
            lista = consulta.getResultList();
            return lista;
        }catch(Exception e){
            JOptionPane.showMessageDialog(null, "Erro ao listar - "+e.toString());
            em.getTransaction().rollback();
            System.out.println(e.getStackTrace());
            return null;
        }
    }
    
}//CLASS
